#ifndef LISTENER_HPP
#define LISTENER_HPP

/********************************************************************
	created:	2011/01/17
	filename: 	E:\C++\Red\src\Graphics\Listener.hpp
	author:		Red
	
	purpose:	Abstract class for all Listeners
*********************************************************************/

#include "Config.hpp"
#include "SFML/Window/Event.hpp"

namespace red {
	/// Listener Type
	enum ListenerType{
		LT_Mouse,
		LT_Key
	};

	/// Abstract class for all SFML Listeners
	class REDAPI Listener{
	public:
		/// Callable function which send the received event in the right callback
		/// @param pEvent : Received Event
		virtual void OnEvent(const sf::Event &pEvent) = 0;

		/// Returns the Listener Type
		ListenerType GetType() const { return mType; }

	protected:
		ListenerType mType;		///< Listener Type
	};
}
#endif // LISTENER_HPP